package com.qike.duola.service;

import com.qike.duola.domain.DuolaApprovalUser;
import com.qike.duola.dto.*;
import com.qike.duola.vo.ApprovalInfoVo;
import com.qike.duola.vo.ApprovalListVo;
import com.qike.duola.vo.ApprovalProgressVo;
import com.qike.duola.vo.WaitApprovalListVo;

import java.util.List;

public interface ApprovalService {

    /**
     * 审批模板列表
     * @return
     */
    ApprovalListVo ApprovalList(ApprovalListDto approvalListDto);

    /**
     * 审批模板详情
     * @param id
     * @return
     */
    ApprovalInfoVo approvalInfo(Integer id) throws Exception;

    /**
     * 审批流程人员设置
     * @param approvalProcessSetDto
     */
    void approvalProcessSet(List<ApprovalProcessSetDto> approvalProcessSetDto) throws Exception;

    /**
     * 我的审批列表
     * @param waitApprovalListDto
     * @return
     */
    WaitApprovalListVo waitApprovalList(WaitApprovalListDto waitApprovalListDto);

    /**
     * 审批操作,同意.拒绝
     * @param approvalOperationDto
     */
    void approvalOperation(ApprovalOperationDto approvalOperationDto);


    /**
     * 发起审批
     * @param uid
     * @param orderId
     * @param type
     * @throws Exception
     */
    void startApproval(Long uid,Integer orderId,Integer type) throws Exception;

    /**
     * 审批进度查询
     * @param id
     * @param approvalId
     * @return
     */
    List<ApprovalProgressVo> approvalProgress(Integer id, Integer approvalId);

    /**
     * 查询是否有设置审批流程
     * @param id
     * @return
     */
    void findProcess(Integer id) throws Exception;
}
